﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace VkSample111;

public class FlatData
{
    public int DataByteCount { get; set; }

    public int VCount { get; set; }

    public float[] Data { get; set; }

    public void GenVertexData()
    {
        List<float> alVertix = new List<float>();
        List<float> alTexCoor = new List<float>();
        int cols = 12;
        int rows = cols * 3 / 4;
        float widht = 12;
        float UNIT_SIZE = widht / cols;
        for (int i = 0; i < cols; i++)
        {
            for (int j = 0; j < rows; j++)
            {
                float zsx = -UNIT_SIZE * cols / 2 + i * UNIT_SIZE;
                float zsy = UNIT_SIZE * rows / 2 - j * UNIT_SIZE;
                float zsz = 0;
                alVertix.Add(zsx);
                alVertix.Add(zsy);
                alVertix.Add(zsz);
                alVertix.Add(zsx);
                alVertix.Add(zsy - UNIT_SIZE);
                alVertix.Add(zsz);
                alVertix.Add(zsx + UNIT_SIZE);
                alVertix.Add(zsy);
                alVertix.Add(zsz);
                alVertix.Add(zsx + UNIT_SIZE);
                alVertix.Add(zsy);
                alVertix.Add(zsz);
                alVertix.Add(zsx);
                alVertix.Add(zsy - UNIT_SIZE);
                alVertix.Add(zsz);
                alVertix.Add(zsx + UNIT_SIZE);
                alVertix.Add(zsy - UNIT_SIZE);
                alVertix.Add(zsz);
            }
        }
        float sizew = 1.0f / cols;
        float sizeh = 1.0f / rows;
        for (int i = 0; i < cols; i++)
        {
            for (int j = 0; j < rows; j++)
            {
                float s = i * sizew;
                float t = j * sizeh;
                alTexCoor.Add(s);
                alTexCoor.Add(t);
                alTexCoor.Add(s);
                alTexCoor.Add(t + sizeh);
                alTexCoor.Add(s + sizew);
                alTexCoor.Add(t);
                alTexCoor.Add(s + sizew);
                alTexCoor.Add(t);
                alTexCoor.Add(s);
                alTexCoor.Add(t + sizeh);
                alTexCoor.Add(s + sizew);
                alTexCoor.Add(t + sizeh);
            }
        }
        VCount = cols * rows * 6;
        DataByteCount = VCount * 5 * sizeof(float);
        Data = new float[VCount * 5];
        int index = 0;
        for (int i = 0; i < VCount; i++)
        {
            Data[index++] = alVertix[i * 3 + 0];
            Data[index++] = alVertix[i * 3 + 1];
            Data[index++] = alVertix[i * 3 + 2];
            Data[index++] = alTexCoor[i * 2 + 0];
            Data[index++] = alTexCoor[i * 2 + 1];
        }
    }
}
